/*
 * Main.cpp
 *
 *  Created on: 20 f�vr. 2015
 *      Author: gontranclaritoux
 */

#include <src/Gardien.h>
#include <src/Jeu.h>
#include <src/Plateau.h>


using namespace std;
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ostream>



int main(int argc, char **argv) {
	Jeu jeu;
	Gardien gardien;
	Plateau plateau;
	bool type = true, jouer = true;
	int entier1 = 0,joueurActuel = 0;
	string nomFichier, nom1, nom2;
	char typeJ1, typeJ2, imp = 'x';

	cout << "================================================================" << endl;
	cout << "=============== Bienvenue à DROLES DE ZEBRES !! ================" << endl;

	while(entier1 != 3){ // tant que l'utilisateur ne décide pas de quitter le programme
		while(entier1 < 1 || entier1 > 3){
			cout << "Entrez votre choix entre : (1, 2 ou 3) " << endl;
			cout << "1 : Nouveau jeu" << endl;
			cout << "2 : Charger jeu" << endl;
			cout << "3 : Quitter le programme" << endl;
			cin >> entier1;

			if(entier1 < 1 || entier1 > 3)
				cout << "L'entier que vous avez entré n'est pas bon !!" << endl;
		}

		switch(entier1){
		case 1 :{ // Nouveau Jeu
			Plateau p;
			Gardien g;

			cout << "Donnez le nom du joueur 1 : ";
			cin >> nom1;
			while(type){
				cout << nom1 << " est-il un joueur réel ou l'ordinateur? (j ou o)" << endl;
				cin >> typeJ1;

				if(typeJ1 != 'j' && typeJ1 != 'o')
					cout << "Le charactère que vous avez entré n'est pas pris en charge!" << endl;
				else
					type = false;
			}

			cout << "Donnez le nom du joueur 2 : ";
			cin >> nom2;

			type = true;

			if(typeJ1 == 'j'){ // on demande seulement si le joueur 1 n'est pas l'ordinateur, sinon par défaut c'est un joueur réel

				while(type){
					cout << nom2 << " est-il un joueur réel ou l'ordinateur? (j ou o)" << endl;
					cin >> typeJ2;

					if(typeJ2 != 'j' && typeJ2 != 'o')
						cout << "Le charactère que vous avez entré n'est pas pris en charge!" << endl;
					else
						type = false;
				}
			}
			else{
				cout << "Le joueur 1 est déjà l'ordinateur donc le joueur 2 ne peut etre qu'un joueur réel !!" << endl;
				typeJ2 = 'j';
			}

			Jeu j(p, g, nom1, typeJ1, nom2, typeJ2 );
			jeu = j;
			joueurActuel = 1;

			break;
		}

		case 2 :{ // On charge un jeu
			cout << "Donnez le nom du fichier à partir duquel charger le jeu. Exemple : MonJeu.txt " << endl;
			cin >> nomFichier;
			jeu = jeu.chargerJeu(nomFichier);

			joueurActuel = jeu.getJoueurActuel(); // on récupère le joueur qui commence la partie
			break;
		}

		case 3:{
			cout << "=================== Merci d'etre passe !! :) ====================" << endl;
			cout << "================================================================" << endl;
			return 0;
		}
		}

		int num = 8;
		while(jouer){ // on joue

			if(entier1 == 1){ // si nouveau jeu
				cout << nom1 << " veut-il déposer Impala sur une ligne? (o/n)" << endl;
				while(imp != 'o' && imp != 'n'){
					cin >> imp;

					if(imp != 'o' && imp != 'n')
						cout << "Entrez une bonne valeur!!" << endl;
				}

				if(imp == 'o'){ // c'est une ligne
					cout << "Quel numéro de ligne ? (entre 0 et 4 inclus)" << endl;
					while(num < 0 || num > 5){
						cin >> num;
						if(num < 0 || num > 5)
							cout << "Le numéro entré n'est pas bon !!";
					}
				}
				else{ // c'est une colonne
					cout << "Quel numéro de ligne ? (entre 0 et 5 inclus)" << endl;
					while(num < 0 || num > 6){
						cin >> num;
						if(num < 0 || num > 6)
							cout << "Le numéro entré n'est pas bon !!";
					}
				}

				if(imp == 'o')
					jeu.getGardien().setPion(true, num);
				else
					jeu.getGardien().setPion(false, num);

			}

		}



	}


}


